
#hello openCV
import cv2

#显示原图
img = cv2.imread('1/lena512color.tiff')  #opencv路径不能是中文路径
# img = cv2.imread('1/answer1.png')   #这里选择了一个长宽不一样的图进行宽度、长度等参数的调整试验
cv2.imshow('resourceImg', img)

#对原始图像使用resize()
width, height = img.shape[:2]
#img.shape[:2] 取彩色图片的长、宽，如果img.shape[:3] 取取彩色图片的长、宽、通道
#L[a:b]  L这个列表，从a这个位置开始去，取到b-1为止
# img.shape[0]：图像的垂直尺寸（高度）
# img.shape[1]：图像的水平尺寸（宽度）
# img.shape[2]：图像的通道数
# 在矩阵使用shape的话，[0]就表示行数，[1]则表示列数。

img2 = cv2.resize(img, (int(img.shape[1]/2),int(img.shape[0]/2)), interpolation=cv2.INTER_CUBIC)
#图片改变大小
#python dst=cv2.resize(src,dsize[,dst[,fx[,fy[,interpolation]]]])
# 参数：
# src    原始图像  
# dsize   目标图像大小。当dsize为0时，它可以通过以下公式计算得出：dsize = Size(round(fx*src.cols), round(fy*src.rows))所以，参数dsize和参数(fx, fy)不能够同时为0
# dst  当参数dsize不为0时，dst的大小为size；否则，它的大小需要根据src的大小，参数fx和fy决定。dst的类型（type）和src图像相同
# fx 水平轴上的比例因子。当它为0时，计算公式如下：(double)dsize.width/src.cols
# fy  垂直轴上的比例因子。当它为0时，计算公式如下：(double)dsize.height/src.rows
# interpolation  像素外插策略
# 插值方法。共有5种：
#    1\INTER_NEAREST - 最近邻插值法
#    2\INTER_LINEAR - 双线性插值法（默认）
#    3\INTER_AREA - 基于局部像素的重采样（resampling using pixel area relation）。对于图像抽取（image decimation）来说，这可能是一个更好的方法。但如果是放大图像时，它和最近邻法的效果类似。
#    4\INTER_CUBIC - 基于4x4像素邻域的3次插值法
#    5\INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值
cv2.imshow('resizeImg', img2)

#对原始图像进行pyrUp和pyrDown的处理
img3=cv2.pyrDown(img)
img4 = cv2.pyrUp(img)
cv2.imshow('pyrDown', img3)
cv2.imshow('pyrUp', img4)
#   pyrDown()先对图像进行高斯平滑，然后再进行降采样（将图像尺寸行和列方向缩减一半）
#   pyrUp()先对图像进行高斯平滑，然后再进行降采样（将图像尺寸行和列方向放大一倍）
cv2.waitKey()
cv2.destroyAllWindows()
